package com.simpou.commons.utils.reflection.condition;

import com.simpou.commons.utils.reflection.Reflections;
import java.lang.reflect.Field;
import lombok.RequiredArgsConstructor;

/**
 * Condições que exige que um campo seja de um tipo básico. São considerados
 * básicos os tipos primitivos e seus boxings correspondentes, string, date,
 * bigdecimal e enum. Campos genéricos de super classes são considerados.
 *
 * @author Jonas Pereira
 * @since 2013-10-15
 */
@RequiredArgsConstructor
public class GenericBasicField extends BasicField{

    private final Class<?> subClass;
    
    @Override
    public boolean check(final Field field) {
        return isBasic(Reflections.getFieldType(subClass, field));
    }
}
